LFP estimation with dynamic remeshing

Plot LFP from toy neurons

from neuron import h  # , gui
from neuron.units import ms, mV
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.animation import ArtistAnimation
import xcell
from tqdm import trange

import Common
import time
import pickle
import os

from xcell import nrnutil as nUtil
from matplotlib.lines import Line2D

resultFolder = '/tmp'


h.load_file('stdrun.hoc')
h.CVode().use_fast_imem(1)

mpl.style.use('fast')


nRing = 5
nSegs = 5

dmax = 8
dmin = 4

# vids = False
# post = False
nskip = 4

# Overrides for e.g. debugging in Spyder
#args.vids=True
# args.synth=False
# args.folder='Quals/polyCell'
#args.folder='Quals/monoCell'
#args.strat='depth'
#args.nSegs = 101
# args.folder='tst'
#args.nskip=1
#args.nRing=0
ring = Common.Ring(N=nRing, stim_delay=0, dendSegs=nSegs, r=175)
tstop = 40
tPerFrame = 5
barRatio=[9,1]

ivecs, isSphere, coords, rads = nUtil.getNeuronGeometry()


t = h.Vector().record(h._ref_t)
h.finitialize(-65 * mV)
h.continuerun(tstop)

tv = np.array(t)*1e-3
I = 1e-9*np.array(ivecs).transpose()


I = I[::nskip]
tv = tv[::nskip]


analyticVmax = I/(4*np.pi*np.array(rads, ndmin=2))
vPeak = np.max(np.abs(analyticVmax))

imax = np.max(np.abs(I[::nskip]))


coord = np.array(coords)
xmax = 2*np.max(np.concatenate(
    (np.max(coord, axis=0), np.min(coord, axis=0))
))

#round up
xmax=xcell.util.oneDigit(xmax)
if xmax <= 0 or np.isnan(xmax):
    xmax = 1e-4


lastNumEl = 0
lastI = 0

study, setup = Common.makeSynthStudy(resultFolder, xmax=xmax)
setup.currentSources = []
studyPath = study.studyPath

dspan = dmax-dmin


tdata=None

img = xcell.visualizers.SingleSlice(None, study,
                                    tv, tdata=tdata)

for r, c, v in zip(rads, coords, I[0]):
    setup.addCurrentSource(v, c, r)

tmax = tv.shape[0]
errdicts = []

for ii in trange(0, tmax):

    t0 = time.monotonic()
    ivals = I[ii]
    tval = tv[ii]
    vScale = np.abs(analyticVmax[ii])/vPeak

    setup.currentTime = tval

    changed = False


    for jj in range(len(setup.currentSources)):
        ival = ivals[jj]
        setup.currentSources[jj].value = ival

    # Depth strategy
    scale = dmin+dspan*vScale
    dint = np.rint(scale)
    maxdepth = np.floor(scale).astype(int)

    density = 0.2  # +0.2*dfrac

    metricCoef = 2**(-density*scale)


    netScale = 2**(-maxdepth*density)

    changed = setup.makeAdaptiveGrid(
        coord, maxdepth, xcell.generalMetric, coefs=metricCoef)

    if changed or ii == 0:
        setup.meshnum += 1
        setup.finalizeMesh()

        numEl = len(setup.mesh.elements)

        setup.setBoundaryNodes()

        v = setup.iterativeSolve()
        lastNumEl = numEl
        setup.iteration += 1

        study.saveData(setup)  # ,baseName=str(setup.iteration))
        print('%d source nodes' % sum(setup.nodeRoleTable == 2))
    else:
        # TODO: why is reset needed?
        setup.nodeRoleTable[setup.nodeRoleTable == 2] = 0

        v = setup.iterativeSolve()

    dt = time.monotonic()-t0

    lastI = ival

    study.newLogEntry(['Timestep', 'Meshnum'], [
                      setup.currentTime, setup.meshnum])

    setup.stepLogs = []

    errdict = xcell.misc.getErrorEstimates(setup)
    errdict['densities'] = density
    errdict['depths'] = maxdepth
    errdict['numels'] = lastNumEl
    errdict['dt'] = dt
    errdict['vMax'] = max(v)
    errdict['vMin'] = min(v)
    errdicts.append(errdict)


    img.addSimulationData(setup, append=True)

lists = xcell.misc.transposeDicts(errdicts)


xcell.colors.useDarkStyle()
nUtil.showCellGeo(img.axes[0])

ani=img.animateStudy('', fps=30)
  0%|          | 0/401 [00:00<?, ?it/s]1114 elem
18 source nodes

  0%|          | 1/401 [00:01<09:11,  1.38s/it]
  0%|          | 2/401 [00:01<05:19,  1.25it/s]
  1%|          | 3/401 [00:02<04:05,  1.62it/s]
  1%|          | 4/401 [00:02<03:29,  1.89it/s]
  1%|1         | 5/401 [00:02<03:10,  2.08it/s]
  1%|1         | 6/401 [00:03<02:58,  2.21it/s]
  2%|1         | 7/401 [00:03<02:51,  2.30it/s]
  2%|1         | 8/401 [00:04<02:45,  2.37it/s]
  2%|2         | 9/401 [00:04<02:42,  2.42it/s]
  2%|2         | 10/401 [00:04<02:39,  2.45it/s]
  3%|2         | 11/401 [00:05<02:37,  2.47it/s]
  3%|2         | 12/401 [00:05<02:36,  2.49it/s]
  3%|3         | 13/401 [00:06<02:35,  2.50it/s]
  3%|3         | 14/401 [00:06<02:34,  2.51it/s]
  4%|3         | 15/401 [00:06<02:33,  2.51it/s]
  4%|3         | 16/401 [00:07<02:33,  2.51it/s]
  4%|4         | 17/401 [00:07<02:32,  2.52it/s]
  4%|4         | 18/401 [00:08<02:31,  2.52it/s]
  5%|4         | 19/401 [00:08<02:31,  2.53it/s]
  5%|4         | 20/401 [00:08<02:30,  2.53it/s]
  5%|5         | 21/401 [00:09<02:30,  2.53it/s]
  5%|5         | 22/401 [00:09<02:29,  2.53it/s]
  6%|5         | 23/401 [00:10<02:28,  2.54it/s]
  6%|5         | 24/401 [00:10<02:28,  2.53it/s]
  6%|6         | 25/401 [00:10<02:28,  2.54it/s]
  6%|6         | 26/401 [00:11<02:27,  2.54it/s]
  7%|6         | 27/401 [00:11<02:27,  2.54it/s]
  7%|6         | 28/401 [00:12<02:27,  2.54it/s]
  7%|7         | 29/401 [00:12<02:26,  2.54it/s]
  7%|7         | 30/401 [00:12<02:26,  2.54it/s]
  8%|7         | 31/401 [00:13<02:26,  2.53it/s]
  8%|7         | 32/401 [00:13<02:26,  2.52it/s]
  8%|8         | 33/401 [00:14<02:25,  2.52it/s]
  8%|8         | 34/401 [00:14<02:25,  2.52it/s]
  9%|8         | 35/401 [00:14<02:24,  2.53it/s]
  9%|8         | 36/401 [00:15<02:24,  2.53it/s]
  9%|9         | 37/401 [00:15<02:23,  2.53it/s]
  9%|9         | 38/401 [00:16<02:23,  2.52it/s]
 10%|9         | 39/401 [00:16<02:23,  2.53it/s]
 10%|9         | 40/401 [00:16<02:22,  2.53it/s]
 10%|#         | 41/401 [00:17<02:22,  2.53it/s]4754 elem
21 source nodes

 10%|#         | 42/401 [00:19<05:14,  1.14it/s]
 11%|#         | 43/401 [00:20<06:18,  1.06s/it]
 11%|#         | 44/401 [00:22<06:57,  1.17s/it]
 11%|#1        | 45/401 [00:23<07:13,  1.22s/it]
 11%|#1        | 46/401 [00:24<07:20,  1.24s/it]
 12%|#1        | 47/401 [00:26<07:24,  1.26s/it]
 12%|#1        | 48/401 [00:27<07:24,  1.26s/it]
 12%|#2        | 49/401 [00:28<07:24,  1.26s/it]
 12%|#2        | 50/401 [00:29<07:17,  1.25s/it]
 13%|#2        | 51/401 [00:30<07:11,  1.23s/it]
 13%|#2        | 52/401 [00:32<07:05,  1.22s/it]
 13%|#3        | 53/401 [00:33<07:01,  1.21s/it]2108 elem
22 source nodes

 13%|#3        | 54/401 [00:34<06:26,  1.11s/it]
 14%|#3        | 55/401 [00:34<05:43,  1.01it/s]
 14%|#3        | 56/401 [00:35<05:09,  1.11it/s]
 14%|#4        | 57/401 [00:36<04:44,  1.21it/s]
 14%|#4        | 58/401 [00:36<04:26,  1.29it/s]
 15%|#4        | 59/401 [00:37<04:14,  1.35it/s]
 15%|#4        | 60/401 [00:38<04:04,  1.39it/s]
 15%|#5        | 61/401 [00:38<03:58,  1.43it/s]
 15%|#5        | 62/401 [00:39<03:53,  1.45it/s]
 16%|#5        | 63/401 [00:40<03:49,  1.47it/s]
 16%|#5        | 64/401 [00:40<03:46,  1.49it/s]
 16%|#6        | 65/401 [00:41<03:44,  1.50it/s]
 16%|#6        | 66/401 [00:42<03:42,  1.51it/s]
 17%|#6        | 67/401 [00:42<03:41,  1.51it/s]
 17%|#6        | 68/401 [00:43<03:40,  1.51it/s]
 17%|#7        | 69/401 [00:44<03:39,  1.51it/s]
 17%|#7        | 70/401 [00:44<03:38,  1.51it/s]
 18%|#7        | 71/401 [00:45<03:37,  1.52it/s]
 18%|#7        | 72/401 [00:46<03:36,  1.52it/s]
 18%|#8        | 73/401 [00:46<03:36,  1.52it/s]
 18%|#8        | 74/401 [00:47<03:35,  1.52it/s]
 19%|#8        | 75/401 [00:48<03:34,  1.52it/s]
 19%|#8        | 76/401 [00:48<03:34,  1.52it/s]
 19%|#9        | 77/401 [00:49<03:33,  1.52it/s]
 19%|#9        | 78/401 [00:50<03:33,  1.52it/s]
 20%|#9        | 79/401 [00:50<03:32,  1.52it/s]1674 elem
21 source nodes

 20%|#9        | 80/401 [00:51<03:35,  1.49it/s]
 20%|##        | 81/401 [00:52<03:26,  1.55it/s]
 20%|##        | 82/401 [00:52<03:20,  1.59it/s]
 21%|##        | 83/401 [00:53<03:15,  1.62it/s]
 21%|##        | 84/401 [00:53<03:12,  1.65it/s]
 21%|##1       | 85/401 [00:54<03:09,  1.67it/s]
 21%|##1       | 86/401 [00:55<03:07,  1.68it/s]
 22%|##1       | 87/401 [00:55<03:06,  1.68it/s]
 22%|##1       | 88/401 [00:56<03:05,  1.69it/s]
 22%|##2       | 89/401 [00:56<03:04,  1.69it/s]
 22%|##2       | 90/401 [00:57<03:03,  1.70it/s]
 23%|##2       | 91/401 [00:57<03:02,  1.70it/s]
 23%|##2       | 92/401 [00:58<03:01,  1.70it/s]
 23%|##3       | 93/401 [00:59<03:00,  1.70it/s]
 23%|##3       | 94/401 [00:59<02:59,  1.71it/s]
 24%|##3       | 95/401 [01:00<02:59,  1.71it/s]
 24%|##3       | 96/401 [01:00<02:58,  1.71it/s]
 24%|##4       | 97/401 [01:01<02:57,  1.71it/s]
 24%|##4       | 98/401 [01:02<02:57,  1.71it/s]
 25%|##4       | 99/401 [01:02<02:57,  1.71it/s]
 25%|##4       | 100/401 [01:03<02:56,  1.70it/s]
 25%|##5       | 101/401 [01:03<02:55,  1.71it/s]
 25%|##5       | 102/401 [01:04<02:54,  1.71it/s]
 26%|##5       | 103/401 [01:04<02:53,  1.71it/s]2276 elem
22 source nodes

 26%|##5       | 104/401 [01:05<03:25,  1.44it/s]2402 elem
22 source nodes

 26%|##6       | 105/401 [01:06<03:48,  1.30it/s]
 26%|##6       | 106/401 [01:07<03:51,  1.27it/s]
 27%|##6       | 107/401 [01:08<03:52,  1.26it/s]
 27%|##6       | 108/401 [01:09<03:52,  1.26it/s]
 27%|##7       | 109/401 [01:10<03:52,  1.25it/s]
 27%|##7       | 110/401 [01:10<03:51,  1.26it/s]
 28%|##7       | 111/401 [01:11<03:50,  1.26it/s]
 28%|##7       | 112/401 [01:12<03:49,  1.26it/s]
 28%|##8       | 113/401 [01:13<03:48,  1.26it/s]
 28%|##8       | 114/401 [01:14<03:47,  1.26it/s]
 29%|##8       | 115/401 [01:14<03:46,  1.26it/s]
 29%|##8       | 116/401 [01:15<03:45,  1.26it/s]
 29%|##9       | 117/401 [01:16<03:41,  1.28it/s]1884 elem
22 source nodes

 29%|##9       | 118/401 [01:17<03:38,  1.29it/s]1982 elem
22 source nodes

 30%|##9       | 119/401 [01:17<03:40,  1.28it/s]2332 elem
22 source nodes

 30%|##9       | 120/401 [01:18<03:54,  1.20it/s]
 30%|###       | 121/401 [01:19<03:49,  1.22it/s]1884 elem
22 source nodes

 30%|###       | 122/401 [01:20<03:44,  1.25it/s]
 31%|###       | 123/401 [01:21<03:31,  1.32it/s]
 31%|###       | 124/401 [01:21<03:21,  1.37it/s]
 31%|###1      | 125/401 [01:22<03:15,  1.41it/s]
 31%|###1      | 126/401 [01:23<03:10,  1.44it/s]
 32%|###1      | 127/401 [01:23<03:06,  1.47it/s]
 32%|###1      | 128/401 [01:24<03:04,  1.48it/s]
 32%|###2      | 129/401 [01:25<03:02,  1.49it/s]
 32%|###2      | 130/401 [01:25<03:00,  1.50it/s]
 33%|###2      | 131/401 [01:26<02:58,  1.51it/s]
 33%|###2      | 132/401 [01:27<02:57,  1.51it/s]
 33%|###3      | 133/401 [01:27<02:56,  1.52it/s]
 33%|###3      | 134/401 [01:28<02:55,  1.52it/s]
 34%|###3      | 135/401 [01:28<02:54,  1.52it/s]
 34%|###3      | 136/401 [01:29<02:54,  1.52it/s]1870 elem
22 source nodes

 34%|###4      | 137/401 [01:30<02:59,  1.47it/s]
 34%|###4      | 138/401 [01:31<02:57,  1.48it/s]
 35%|###4      | 139/401 [01:31<02:54,  1.50it/s]
 35%|###4      | 140/401 [01:32<02:53,  1.50it/s]
 35%|###5      | 141/401 [01:33<02:51,  1.51it/s]
 35%|###5      | 142/401 [01:33<02:51,  1.51it/s]
 36%|###5      | 143/401 [01:34<02:50,  1.51it/s]
 36%|###5      | 144/401 [01:34<02:49,  1.52it/s]
 36%|###6      | 145/401 [01:35<02:49,  1.51it/s]
 36%|###6      | 146/401 [01:36<02:48,  1.51it/s]
 37%|###6      | 147/401 [01:36<02:47,  1.52it/s]
 37%|###6      | 148/401 [01:37<02:46,  1.52it/s]
 37%|###7      | 149/401 [01:38<02:45,  1.52it/s]
 37%|###7      | 150/401 [01:38<02:44,  1.53it/s]
 38%|###7      | 151/401 [01:39<02:43,  1.53it/s]
 38%|###7      | 152/401 [01:40<02:42,  1.53it/s]
 38%|###8      | 153/401 [01:40<02:42,  1.53it/s]
 38%|###8      | 154/401 [01:41<02:41,  1.53it/s]
 39%|###8      | 155/401 [01:42<02:41,  1.53it/s]
 39%|###8      | 156/401 [01:42<02:40,  1.53it/s]
 39%|###9      | 157/401 [01:43<02:39,  1.53it/s]
 39%|###9      | 158/401 [01:44<02:38,  1.53it/s]
 40%|###9      | 159/401 [01:44<02:38,  1.53it/s]
 40%|###9      | 160/401 [01:45<02:37,  1.53it/s]
 40%|####      | 161/401 [01:46<02:36,  1.53it/s]
 40%|####      | 162/401 [01:46<02:35,  1.53it/s]
 41%|####      | 163/401 [01:47<02:35,  1.53it/s]
 41%|####      | 164/401 [01:48<02:35,  1.53it/s]
 41%|####1     | 165/401 [01:48<02:34,  1.52it/s]
 41%|####1     | 166/401 [01:49<02:34,  1.52it/s]
 42%|####1     | 167/401 [01:50<02:33,  1.52it/s]
 42%|####1     | 168/401 [01:50<02:32,  1.53it/s]
 42%|####2     | 169/401 [01:51<02:32,  1.53it/s]2528 elem
22 source nodes

 42%|####2     | 170/401 [01:52<02:56,  1.31it/s]2682 elem
22 source nodes

 43%|####2     | 171/401 [01:53<03:14,  1.18it/s]
 43%|####2     | 172/401 [01:54<03:16,  1.16it/s]
 43%|####3     | 173/401 [01:55<03:17,  1.15it/s]
 43%|####3     | 174/401 [01:56<03:18,  1.14it/s]
 44%|####3     | 175/401 [01:56<03:17,  1.14it/s]
 44%|####3     | 176/401 [01:57<03:16,  1.14it/s]
 44%|####4     | 177/401 [01:58<03:16,  1.14it/s]
 44%|####4     | 178/401 [01:59<03:15,  1.14it/s]
 45%|####4     | 179/401 [02:00<03:13,  1.14it/s]
 45%|####4     | 180/401 [02:01<03:12,  1.15it/s]
 45%|####5     | 181/401 [02:02<03:11,  1.15it/s]
 45%|####5     | 182/401 [02:03<03:10,  1.15it/s]
 46%|####5     | 183/401 [02:03<03:07,  1.17it/s]2136 elem
24 source nodes

 46%|####5     | 184/401 [02:04<03:06,  1.16it/s]2192 elem
25 source nodes

 46%|####6     | 185/401 [02:05<03:06,  1.16it/s]2542 elem
24 source nodes

 46%|####6     | 186/401 [02:06<03:16,  1.09it/s]
 47%|####6     | 187/401 [02:07<03:13,  1.11it/s]
 47%|####6     | 188/401 [02:08<03:08,  1.13it/s]
 47%|####7     | 189/401 [02:09<03:03,  1.15it/s]
 47%|####7     | 190/401 [02:10<03:02,  1.16it/s]
 48%|####7     | 191/401 [02:10<02:58,  1.18it/s]
 48%|####7     | 192/401 [02:11<02:55,  1.19it/s]
 48%|####8     | 193/401 [02:12<02:53,  1.20it/s]
 48%|####8     | 194/401 [02:13<02:52,  1.20it/s]
 49%|####8     | 195/401 [02:14<02:50,  1.21it/s]
 49%|####8     | 196/401 [02:14<02:49,  1.21it/s]
 49%|####9     | 197/401 [02:15<02:48,  1.21it/s]
 49%|####9     | 198/401 [02:16<02:46,  1.22it/s]
 50%|####9     | 199/401 [02:17<02:45,  1.22it/s]
 50%|####9     | 200/401 [02:18<02:45,  1.22it/s]2094 elem
25 source nodes

 50%|#####     | 201/401 [02:19<02:46,  1.20it/s]
 50%|#####     | 202/401 [02:19<02:40,  1.24it/s]
 51%|#####     | 203/401 [02:20<02:35,  1.27it/s]
 51%|#####     | 204/401 [02:21<02:31,  1.30it/s]
 51%|#####1    | 205/401 [02:22<02:29,  1.31it/s]
 51%|#####1    | 206/401 [02:22<02:27,  1.32it/s]
 52%|#####1    | 207/401 [02:23<02:25,  1.33it/s]
 52%|#####1    | 208/401 [02:24<02:23,  1.34it/s]
 52%|#####2    | 209/401 [02:25<02:23,  1.34it/s]
 52%|#####2    | 210/401 [02:25<02:22,  1.34it/s]
 53%|#####2    | 211/401 [02:26<02:21,  1.35it/s]
 53%|#####2    | 212/401 [02:27<02:20,  1.35it/s]
 53%|#####3    | 213/401 [02:27<02:19,  1.35it/s]
 53%|#####3    | 214/401 [02:28<02:18,  1.35it/s]
 54%|#####3    | 215/401 [02:29<02:17,  1.35it/s]
 54%|#####3    | 216/401 [02:30<02:16,  1.35it/s]
 54%|#####4    | 217/401 [02:30<02:16,  1.35it/s]
 54%|#####4    | 218/401 [02:31<02:15,  1.35it/s]
 55%|#####4    | 219/401 [02:32<02:14,  1.35it/s]
 55%|#####4    | 220/401 [02:33<02:14,  1.35it/s]
 55%|#####5    | 221/401 [02:33<02:13,  1.35it/s]
 55%|#####5    | 222/401 [02:34<02:12,  1.35it/s]
 56%|#####5    | 223/401 [02:35<02:11,  1.35it/s]
 56%|#####5    | 224/401 [02:36<02:10,  1.35it/s]
 56%|#####6    | 225/401 [02:36<02:09,  1.36it/s]
 56%|#####6    | 226/401 [02:37<02:09,  1.35it/s]
 57%|#####6    | 227/401 [02:38<02:08,  1.36it/s]
 57%|#####6    | 228/401 [02:39<02:07,  1.36it/s]
 57%|#####7    | 229/401 [02:39<02:06,  1.36it/s]
 57%|#####7    | 230/401 [02:40<02:06,  1.36it/s]
 58%|#####7    | 231/401 [02:41<02:05,  1.36it/s]
 58%|#####7    | 232/401 [02:42<02:04,  1.35it/s]
 58%|#####8    | 233/401 [02:42<02:04,  1.35it/s]
 58%|#####8    | 234/401 [02:43<02:03,  1.35it/s]
 59%|#####8    | 235/401 [02:44<02:02,  1.35it/s]2752 elem
27 source nodes

 59%|#####8    | 236/401 [02:45<02:21,  1.17it/s]2864 elem
27 source nodes

 59%|#####9    | 237/401 [02:46<02:35,  1.06it/s]
 59%|#####9    | 238/401 [02:47<02:36,  1.04it/s]
 60%|#####9    | 239/401 [02:48<02:37,  1.03it/s]
 60%|#####9    | 240/401 [02:49<02:37,  1.02it/s]
 60%|######    | 241/401 [02:50<02:36,  1.02it/s]
 60%|######    | 242/401 [02:51<02:35,  1.03it/s]
 61%|######    | 243/401 [02:52<02:33,  1.03it/s]
 61%|######    | 244/401 [02:53<02:32,  1.03it/s]
 61%|######1   | 245/401 [02:54<02:31,  1.03it/s]
 61%|######1   | 246/401 [02:55<02:30,  1.03it/s]
 62%|######1   | 247/401 [02:56<02:29,  1.03it/s]
 62%|######1   | 248/401 [02:57<02:28,  1.03it/s]
 62%|######2   | 249/401 [02:58<02:25,  1.04it/s]2346 elem
27 source nodes

 62%|######2   | 250/401 [02:59<02:24,  1.04it/s]2402 elem
27 source nodes

 63%|######2   | 251/401 [03:00<02:24,  1.04it/s]2780 elem
27 source nodes

 63%|######2   | 252/401 [03:01<02:31,  1.01s/it]
 63%|######3   | 253/401 [03:02<02:27,  1.00it/s]
 63%|######3   | 254/401 [03:03<02:23,  1.03it/s]
 64%|######3   | 255/401 [03:04<02:19,  1.05it/s]
 64%|######3   | 256/401 [03:04<02:16,  1.06it/s]
 64%|######4   | 257/401 [03:05<02:14,  1.07it/s]
 64%|######4   | 258/401 [03:06<02:12,  1.08it/s]
 65%|######4   | 259/401 [03:07<02:10,  1.09it/s]
 65%|######4   | 260/401 [03:08<02:09,  1.09it/s]
 65%|######5   | 261/401 [03:09<02:07,  1.09it/s]
 65%|######5   | 262/401 [03:10<02:07,  1.09it/s]
 66%|######5   | 263/401 [03:11<02:06,  1.09it/s]
 66%|######5   | 264/401 [03:12<02:05,  1.09it/s]
 66%|######6   | 265/401 [03:13<02:03,  1.10it/s]
 66%|######6   | 266/401 [03:14<02:03,  1.10it/s]
 67%|######6   | 267/401 [03:15<02:02,  1.10it/s]
 67%|######6   | 268/401 [03:15<02:01,  1.10it/s]
 67%|######7   | 269/401 [03:16<02:00,  1.10it/s]
 67%|######7   | 270/401 [03:17<01:59,  1.10it/s]
 68%|######7   | 271/401 [03:18<01:58,  1.10it/s]
 68%|######7   | 272/401 [03:19<01:57,  1.10it/s]
 68%|######8   | 273/401 [03:20<01:56,  1.10it/s]
 68%|######8   | 274/401 [03:21<01:55,  1.10it/s]
 69%|######8   | 275/401 [03:22<01:54,  1.10it/s]
 69%|######8   | 276/401 [03:23<01:53,  1.10it/s]
 69%|######9   | 277/401 [03:24<01:52,  1.10it/s]
 69%|######9   | 278/401 [03:25<01:51,  1.10it/s]
 70%|######9   | 279/401 [03:25<01:50,  1.10it/s]
 70%|######9   | 280/401 [03:26<01:49,  1.10it/s]
 70%|#######   | 281/401 [03:27<01:48,  1.11it/s]
 70%|#######   | 282/401 [03:28<01:47,  1.11it/s]
 71%|#######   | 283/401 [03:29<01:46,  1.11it/s]
 71%|#######   | 284/401 [03:30<01:45,  1.11it/s]
 71%|#######1  | 285/401 [03:31<01:44,  1.11it/s]
 71%|#######1  | 286/401 [03:32<01:43,  1.11it/s]
 72%|#######1  | 287/401 [03:33<01:42,  1.11it/s]
 72%|#######1  | 288/401 [03:34<01:41,  1.11it/s]
 72%|#######2  | 289/401 [03:34<01:40,  1.11it/s]
 72%|#######2  | 290/401 [03:35<01:39,  1.11it/s]
 73%|#######2  | 291/401 [03:36<01:38,  1.11it/s]
 73%|#######2  | 292/401 [03:37<01:38,  1.11it/s]
 73%|#######3  | 293/401 [03:38<01:37,  1.11it/s]
 73%|#######3  | 294/401 [03:39<01:36,  1.11it/s]
 74%|#######3  | 295/401 [03:40<01:35,  1.11it/s]
 74%|#######3  | 296/401 [03:41<01:34,  1.11it/s]
 74%|#######4  | 297/401 [03:42<01:33,  1.11it/s]
 74%|#######4  | 298/401 [03:43<01:32,  1.11it/s]
 75%|#######4  | 299/401 [03:43<01:31,  1.11it/s]
 75%|#######4  | 300/401 [03:44<01:31,  1.11it/s]
 75%|#######5  | 301/401 [03:45<01:30,  1.11it/s]2878 elem
27 source nodes

 75%|#######5  | 302/401 [03:46<01:37,  1.01it/s]2976 elem
27 source nodes

 76%|#######5  | 303/401 [03:48<01:42,  1.05s/it]
 76%|#######5  | 304/401 [03:49<01:41,  1.04s/it]
 76%|#######6  | 305/401 [03:50<01:39,  1.04s/it]
 76%|#######6  | 306/401 [03:51<01:37,  1.03s/it]
 77%|#######6  | 307/401 [03:52<01:36,  1.02s/it]
 77%|#######6  | 308/401 [03:53<01:34,  1.02s/it]
 77%|#######7  | 309/401 [03:54<01:33,  1.01s/it]
 77%|#######7  | 310/401 [03:55<01:31,  1.01s/it]
 78%|#######7  | 311/401 [03:56<01:30,  1.00s/it]
 78%|#######7  | 312/401 [03:57<01:29,  1.00s/it]
 78%|#######8  | 313/401 [03:58<01:27,  1.00it/s]
 78%|#######8  | 314/401 [03:59<01:27,  1.00s/it]
 79%|#######8  | 315/401 [04:00<01:24,  1.01it/s]2444 elem
27 source nodes

 79%|#######8  | 316/401 [04:01<01:24,  1.01it/s]2514 elem
27 source nodes

 79%|#######9  | 317/401 [04:02<01:28,  1.05s/it]2864 elem
27 source nodes

 79%|#######9  | 318/401 [04:03<01:30,  1.08s/it]
 80%|#######9  | 319/401 [04:04<01:26,  1.06s/it]2430 elem
27 source nodes

 80%|#######9  | 320/401 [04:05<01:24,  1.04s/it]
 80%|########  | 321/401 [04:06<01:18,  1.02it/s]
 80%|########  | 322/401 [04:07<01:14,  1.06it/s]
 81%|########  | 323/401 [04:08<01:11,  1.09it/s]
 81%|########  | 324/401 [04:08<01:09,  1.11it/s]
 81%|########1 | 325/401 [04:09<01:07,  1.13it/s]
 81%|########1 | 326/401 [04:10<01:05,  1.14it/s]
 82%|########1 | 327/401 [04:11<01:04,  1.15it/s]
 82%|########1 | 328/401 [04:12<01:02,  1.16it/s]
 82%|########2 | 329/401 [04:13<01:02,  1.16it/s]
 82%|########2 | 330/401 [04:14<01:00,  1.16it/s]
 83%|########2 | 331/401 [04:14<00:59,  1.17it/s]
 83%|########2 | 332/401 [04:15<00:59,  1.17it/s]
 83%|########3 | 333/401 [04:16<00:57,  1.17it/s]
 83%|########3 | 334/401 [04:17<00:57,  1.17it/s]
 84%|########3 | 335/401 [04:18<00:56,  1.17it/s]
 84%|########3 | 336/401 [04:19<00:55,  1.17it/s]
 84%|########4 | 337/401 [04:19<00:54,  1.17it/s]
 84%|########4 | 338/401 [04:20<00:53,  1.18it/s]
 85%|########4 | 339/401 [04:21<00:52,  1.18it/s]
 85%|########4 | 340/401 [04:22<00:51,  1.18it/s]
 85%|########5 | 341/401 [04:23<00:50,  1.18it/s]
 85%|########5 | 342/401 [04:24<00:50,  1.18it/s]
 86%|########5 | 343/401 [04:25<00:49,  1.18it/s]
 86%|########5 | 344/401 [04:25<00:48,  1.18it/s]
 86%|########6 | 345/401 [04:26<00:47,  1.18it/s]
 86%|########6 | 346/401 [04:27<00:46,  1.18it/s]
 87%|########6 | 347/401 [04:28<00:45,  1.18it/s]
 87%|########6 | 348/401 [04:29<00:44,  1.18it/s]
 87%|########7 | 349/401 [04:30<00:44,  1.18it/s]
 87%|########7 | 350/401 [04:30<00:43,  1.18it/s]
 88%|########7 | 351/401 [04:31<00:42,  1.18it/s]
 88%|########7 | 352/401 [04:32<00:41,  1.18it/s]
 88%|########8 | 353/401 [04:33<00:40,  1.18it/s]
 88%|########8 | 354/401 [04:34<00:39,  1.18it/s]
 89%|########8 | 355/401 [04:35<00:38,  1.18it/s]
 89%|########8 | 356/401 [04:36<00:38,  1.18it/s]
 89%|########9 | 357/401 [04:36<00:37,  1.19it/s]
 89%|########9 | 358/401 [04:37<00:36,  1.19it/s]
 90%|########9 | 359/401 [04:38<00:35,  1.19it/s]
 90%|########9 | 360/401 [04:39<00:34,  1.19it/s]
 90%|######### | 361/401 [04:40<00:33,  1.19it/s]
 90%|######### | 362/401 [04:41<00:32,  1.19it/s]
 91%|######### | 363/401 [04:41<00:31,  1.19it/s]
 91%|######### | 364/401 [04:42<00:31,  1.19it/s]
 91%|#########1| 365/401 [04:43<00:30,  1.19it/s]
 91%|#########1| 366/401 [04:44<00:29,  1.19it/s]
 92%|#########1| 367/401 [04:45<00:28,  1.19it/s]2864 elem
28 source nodes

 92%|#########1| 368/401 [04:46<00:31,  1.06it/s]2962 elem
28 source nodes

 92%|#########2| 369/401 [04:47<00:32,  1.02s/it]
 92%|#########2| 370/401 [04:48<00:31,  1.02s/it]
 93%|#########2| 371/401 [04:49<00:30,  1.02s/it]
 93%|#########2| 372/401 [04:50<00:29,  1.02s/it]
 93%|#########3| 373/401 [04:51<00:28,  1.02s/it]
 93%|#########3| 374/401 [04:52<00:27,  1.02s/it]
 94%|#########3| 375/401 [04:53<00:26,  1.01s/it]
 94%|#########3| 376/401 [04:54<00:25,  1.01s/it]
 94%|#########4| 377/401 [04:55<00:24,  1.01s/it]
 94%|#########4| 378/401 [04:56<00:23,  1.01s/it]
 95%|#########4| 379/401 [04:57<00:22,  1.01s/it]
 95%|#########4| 380/401 [04:58<00:21,  1.00s/it]
 95%|#########5| 381/401 [04:59<00:19,  1.01it/s]2430 elem
27 source nodes

 95%|#########5| 382/401 [05:00<00:18,  1.01it/s]
 96%|#########5| 383/401 [05:01<00:17,  1.05it/s]2808 elem
28 source nodes

 96%|#########5| 384/401 [05:02<00:17,  1.02s/it]
 96%|#########6| 385/401 [05:03<00:16,  1.01s/it]
 96%|#########6| 386/401 [05:04<00:14,  1.01it/s]
 97%|#########6| 387/401 [05:05<00:13,  1.03it/s]
 97%|#########6| 388/401 [05:06<00:12,  1.04it/s]
 97%|#########7| 389/401 [05:07<00:11,  1.06it/s]
 97%|#########7| 390/401 [05:08<00:10,  1.06it/s]
 98%|#########7| 391/401 [05:09<00:09,  1.07it/s]
 98%|#########7| 392/401 [05:10<00:08,  1.08it/s]
 98%|#########8| 393/401 [05:11<00:07,  1.08it/s]
 98%|#########8| 394/401 [05:12<00:06,  1.08it/s]
 99%|#########8| 395/401 [05:13<00:05,  1.08it/s]
 99%|#########8| 396/401 [05:13<00:04,  1.09it/s]
 99%|#########9| 397/401 [05:14<00:03,  1.08it/s]
 99%|#########9| 398/401 [05:15<00:02,  1.09it/s]
100%|#########9| 399/401 [05:16<00:01,  1.09it/s]
100%|#########9| 400/401 [05:17<00:00,  1.09it/s]
100%|##########| 401/401 [05:18<00:00,  1.08it/s]
100%|##########| 401/401 [05:18<00:00,  1.26it/s]

Total running time of the script: ( 7 minutes 9.085 seconds)

Gallery generated by Sphinx-Gallery